const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const morgan = require('morgan');
const app = express();

// 中间件配置
app.use(helmet());
app.use(cors());
app.use(morgan('combined'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 导入路由
const apiRoutes = require('./routes/api');
const userRoutes = require('./routes/userRoutes');
const productRoutes = require('./routes/productRoutes');

// 使用路由
app.use('/api', apiRoutes);
app.use('/api/users', userRoutes);
app.use('/api/products', productRoutes);

// 健康检查端点
app.get('/health', (req, res) => {
  res.status(200).json({
    status: 'success',
    message: 'API服务正常运行',
    timestamp: new Date().toISOString()
  });
});

// 修复后的 404 处理 - 不使用路径参数
app.use((req, res) => {
  res.status(404).json({
    status: 'error',
    message: 'API端点不存在',
    requestedUrl: req.originalUrl
  });
});

// 全局错误处理中间件
app.use((err, req, res, next) => {
  console.error('服务器错误:', err);

  res.status(err.status || 500).json({
    status: 'error',
    message: process.env.NODE_ENV === 'production'
      ? '服务器内部错误'
      : err.message,
    ...(process.env.NODE_ENV !== 'production' && { stack: err.stack })
  });
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`🚀 API服务器运行在端口 ${PORT}`);
});